《高性能網站建設指南》閱讀筆記_規則9- 減少DNS查找
發布時間:2013-11-22 瀏覽:389打印字號:大中小
首先解釋幾個名詞:
DNS:大家都知道是域名系統
TTL值(Time- to - live,生存時間):
每個記錄都有一個生存時間(TTL)值,這個值就決定了這個紀錄什么時候刷新,進而被其他查詢取代。在TTL到達之前,Windows解析將返回緩存中的查詢結果,而不會開始新的DNS查詢。
對美國10大網站的統計,他們發給用戶的TTL從1分鐘到1小時不等,這是由綜合考慮和歷史因素造成的。這些擁有巨大數量用戶的頂級網站都在努力做到當服務器,虛擬ip地址(http://baike.baidu.com/view/711543.htm)或者聯合定位掉線時提供快速故障轉移,這也是yahoo提供較短的ttl的原因,但是Myspace則定位到一個聯合定位工具,對于當前網絡情況,故障轉移不是很重要,因此使用較長的TTL以減少DNS查找,也降低了其名稱服務器的負載。
DNS Client 服務-- --> 在操作系統客戶端的配置:
可以使用控制臺的IPConfig命令來觀測緩存容量并清空緩存。
通過以下的命令就可以顯示緩存的容量,并將結果傳送給More指令,從而將結果一次性在一頁中顯示出來:ipconfig/displaydns
使用一下這個命令來清空緩存:ipconfig/flushdns
Keep-Alive: http構建在TCP上,在http的早期實現中,每個http請求都要打開一個socket連接,這樣做效率很低,因為一個web頁面中很多的http請求都指向同一個服務器。例如很多web頁面中的圖片發起的請求都指向一個圖片服務器。持久連接的引入解決看多對一請求服務器導致socket連接低效性的問題。
瀏覽器自身也有其DNS緩存(如:IE、Firefox),而它們的配置要在注冊表中修改。
每次重新啟動瀏覽器也就自動清空了瀏覽器的DNS緩存,但它不會清空DNSClient 服務緩存。
Fasterfox(http://fasterfox.mozdev.org)是一款Firefox的插件,用于測量和改善Firefox的性能。
DNS將主機名映射到IP上,連接到瀏覽器的DNS解析器會返回服務器的ip地址。一個url可以對應多個ip,比如我們的對應59.151.102.207、105、106
DNS解析也是開銷,在DNS查找之前瀏覽器不能從主機名那里下載到任何東西(這一過程通常需要20到120毫秒),相應時間依賴于DNS解析器,他所能承擔的請求壓力,你與它之間的距離和你的帶寬速度。實際中操作系統和瀏覽器做為緩存DNS查找記錄,但是瀏覽器的Keep-Alive屬性會覆蓋操作系統的緩存過期時間。
我們可以發現,減少DNS查找和第六章所提到的“并行下載”是矛盾的,這方面做的最好的是google,它只有一次DNS查找,因為它頁面中只有兩個組件,所以也不存在影響并行下載的問題。我們的網站不可能只有兩個組件,所以這里又需要一個權衡,本書作者建議使用最少兩個,最多4個主機名來平衡。我們使用的是img1到4,4個,和作者的建議相符合。
綜上所述:通過使用keep-Alive和較少的域名可以減少DNS查找。